home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1994 March / Internet Info CD-ROM (Walnut Creek) (March 1994).iso / standards / CCITT / 1992 / X / x511.asc < prev    next >
Encoding:
Text File  |  1993-07-15  |  90.4 KB  |  1,989 lines

  1.          The drawings contained in this Recommendation have been done in AUTOCAD
  2.          Recommendation X.511
  3.                                THE DIRECTORY - ABSTRACT SERVICE DEFINITION 1)
  4.                                          (Melbourne, 1988)
  5.                                               CONTENTS
  6.          0      Introduction
  7.          1      Scope and field of application
  8.          SECTION 1 - General
  9.          2      References
  10.          3      Definitions
  11.          4      Abbreviations
  12.          5      Conventions
  13.          SECTION 2 - Abstract service
  14.          6      Overview of the directory service
  15.          7      Information types
  16.          8      Bind and unbind operations
  17.          9      Directory read operations
  18.          10     Directory search operations
  19.          11     Directory modify operations
  20.          12     Errors
  21.          Annex A - Abstract service in ASN.1
  22.          Annex B - Directory object identifiers
  23.          0      Introduction
  24.          0.1    This document, together with the others of the series, has  been  produced
  25.          to facilitate the interconnection of information processing  systems  to  provide
  26.          directory services. The set of all such  systems,  together  with  the  directory
  27.          information which they hold, can be viewed as an  integrated  whole,  called  the
  28.          Directory. The information held by  the  Directory,  collectively  known  as  the
  29.          Directory Information Base (DIB), is typically used to  facilitate  communication
  30.          between, with or about objects such as application-entities,  people,  terminals,
  31.          and distribution lists.
  32.          0.2    The Directory plays a significant role in  Open  Systems  Interconnection,
  33.          whose aim is to allow, with a minimum  of  technical  agreement  outside  of  the
  34.          interconnection  standards  themselves,  the   interconnection   of   information
  35.          processing systems:
  36.                -   from different manufacturers;
  37.                -   under different managements;
  38.                -   of different levels of complexity; and
  39.                -   of different ages.
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.          1) Recommendation X.511 and ISO 9594-3, Information Processing   Systems  -  Open  Systems
  65.            Interconnection - The Directory - Abstract Service Definition, were developed in  close
  66.            collaboration and are technically aligned.
  67.  
  68.  
  69.  
  70.                                                       Fascicle VIII.8 - Rec. X.511   PAGE1
  71.  
  72.          0.3    This Recommendation defines the capabilities provided by the Directory  to
  73.          its users.
  74.          0.4    Annex A provides the ASN.1  module  which  contains  all  the  definitions
  75.          associated with the abstract service. 
  76.          1      Scope and field of application
  77.          1.1    This Recommendation defines in an  abstract  way  the  externally  visible
  78.          service provided by the Directory.
  79.          1.2     This  Recommendation  does  not  specify  individual  implementation   or
  80.          products.
  81.          SECTION 1 - General
  82.          2      References
  83.          Recommendation X.200 - Open Systems Interconnection - Basic Reference Model.
  84.          Recommendation X.208 - Specification of Abstract Syntax Notation One (ASN.1).
  85.          Recommendation X.500 - The Directory - Overview of Concepts, Models and Services.
  86.          Recommendation X.501 - The Directory - Models.
  87.          Recommendation X.518 - The Directory - Procedures for Distributed Operation.
  88.          Recommendation X.519 - The Directory - Protocol Specifications.
  89.          Recommendation X.520 - The Directory - Selected Attribute Types.
  90.          Recommendation X.521 - The Directory - Selected Object Classes.
  91.          Recommendation X.509 - The Directory - Authentication Framework.
  92.          Recommendation  X.219  -  Remote  Operations  -  Model,  Notation   and   Service
  93.          Definition.
  94.          Recommendation X.229 - Remote Operations - Protocol Specification.
  95.          Recommendation X.407 - Abstract Service Definition Conventions.
  96.          3      Definitions
  97.          3.1    Basic Directory definitions
  98.                This  Recommendation  makes  use  of  the  following   terms   defined   in
  99.          Recommendation X.500:
  100.                a)  Directory;
  101.                b)  Directory Information Base (DIB);
  102.                c)  (Directory) User.
  103.          3.2    Directory model definitions
  104.                This  Recommendation  makes  use  of  the  following   terms   defined   in
  105.          Recommendation X.501:
  106.                a)     Directory System Agent;
  107.                b)  Directory User Agent.
  108.          3.3    Directory information base definitions
  109.                This  Recommendation  makes  use  of  the  following   terms   defined   in
  110.          Recommendation X.501:
  111.                a)  alias entry;
  112.                b)  Directory Information Tree;
  113.                c)  (Directory) entry;
  114.                d)  immediate superior;
  115.                e)  immediately superior entry/object;
  116.                f)  object;
  117.                g)  object class;
  118.                h)  object entry;
  119.                i)  subordinate;
  120.                j)  superior.
  121.          3.4    Directory entry definitions
  122.                This  Recommendation  makes  use  of  the  following   terms   defined   in
  123.          Recommendation X.501:
  124.                a)  attribute;
  125.                b)  attribute type;
  126.                c)  attribute value;
  127.                d)  attribute value assertion.
  128.          3.5    Name definitions
  129.                This  Recommendation  makes  use  of  the  following   terms   defined   in
  130.          Recommendation X.501:
  131.                a)  alias, alias name;
  132.                b)  distinguished name;
  133.                c)  (directory) name;
  134.  
  135.  
  136.  
  137.  
  138.  
  139.  
  140.  
  141.          PAGE26  Fascicle VIII.8 - Rec. X.511
  142.  
  143.                d)  purported name;
  144.                e)  relative distinguished name.
  145.          3.6    Distributed operations definitions
  146.                This  Recommendation  makes  use  of  the  following   terms   defined   in
  147.          Recommendation X.518:
  148.                a)  chaining;
  149.                b)  referral.
  150.          3.7    Abstract service definitions
  151.                This Recommendation defines the following terms:
  152.                a)  filter: an assertion about the presence or value of certain attributes
  153.                   of an entry in order to limit the scope of a search;
  154.                b)  service controls: parameters conveyed as part of an abstract-operation
  155.                   which constrain various aspects of its performance;
  156.                c)  originator: the user that originated an operation.
  157.          4      Abbreviations
  158.                This Recommendation makes use of the following abbreviations:
  159.                AVA     Attribute Value Assertion
  160.                DIB         Directory Information Base
  161.                DIT         Directory Information Tree
  162.                DMD     Directory Management Domain
  163.                DSA     Directory System Agent
  164.                DUA     Directory User Agent
  165.                RDN     Relative Distinguished Name
  166.          5      Conventions
  167.                This  Recommendation  makes  use  of  the   abstract   service   definition
  168.          conventions defined in Recommendation X.407.
  169.          SECTION 2 - Abstract service
  170.          6      Overview of the directory service
  171.          6.1    As described in Recommendation X.501 the services  of  the  Directory  are
  172.          provided through access points to DUAs, each acting on behalf of  a  user.  These
  173.          concepts are depicted in Figure 1/X.511.
  174.                                         FIGURE 1/X.511 - T0704480-88
  175.  
  176.          6.2    In principle, access points to the Directory may be  of  different  types,
  177.          providing different combinations of services. It  is  valuable  to  consider  the
  178.          Directory as an object, supporting a number of types of port. Each port defines a
  179.          particular kind of interaction which the Directory can participate in with a DUA.
  180.          Each access point corresponds to a particular combination of port types.
  181.          6.3    Using the notation defined in Recommendation X.407 the  Directory  can  be
  182.          defined as follows:
  183.                directory
  184.                   OBJECT
  185.                       PORTS {     readPort [S],
  186.                                   searchPort [S],
  187.                                   modifyPort [S]}
  188.                ::= id-ot-directory
  189.                The Directory supplies operations via: Read Ports,  which  support  reading
  190.          information from a particular named entry in the DIB; Search Ports,  which  allow
  191.          more "exploration" of the DIB; and Modify Ports, which enable the modification of
  192.          entries in the DIB.
  193.                Note - It is intended that in the  future  there  may  be  other  types  of
  194.          Directory port.
  195.          6.4     Similarly, a DUA (from the viewpoint of the Directory) can be defined  as
  196.          follows:
  197.                dua
  198.                   OBJECT
  199.  
  200.  
  201.  
  202.  
  203.  
  204.  
  205.  
  206.  
  207.  
  208.  
  209.  
  210.  
  211.  
  212.                                                       Fascicle VIII.8 - Rec. X.511   PAGE1
  213.  
  214.                       PORTS {     readPort [C],
  215.                                   searchPort [C],
  216.                                   modifyPort [C]}
  217.                ::= id-ot-dua
  218.                The DUA consumes the services provided by the Directory.
  219.  
  220.  
  221.  
  222.  
  223.  
  224.  
  225.  
  226.  
  227.  
  228.  
  229.  
  230.  
  231.  
  232.  
  233.  
  234.  
  235.  
  236.  
  237.  
  238.  
  239.  
  240.  
  241.  
  242.  
  243.  
  244.  
  245.  
  246.  
  247.  
  248.  
  249.  
  250.  
  251.  
  252.  
  253.  
  254.  
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.  
  269.  
  270.  
  271.  
  272.  
  273.  
  274.  
  275.  
  276.  
  277.  
  278.  
  279.  
  280.  
  281.  
  282.  
  283.          PAGE26  Fascicle VIII.8 - Rec. X.511
  284.  
  285.          6.5    The ports cited from  6.2 to 6.4 can be defined as follows:
  286.                readPort
  287.                   PORT
  288.                       CONSUMER INVOKES {
  289.                          Read, Compare, Abandon}
  290.                ::= id-pt-search
  291.                searchPort
  292.                   PORT
  293.                       CONSUMER INVOKES {
  294.                          List, Search}
  295.                ::= id-pt-search
  296.                modifyPort
  297.                   PORT
  298.                   CONSUMER INVOKES {
  299.                       AddEntry, RemoveEntry,
  300.                       ModifyEntry, ModifyRDN}
  301.                ::= id-pt-modify
  302.          6.6    The operations from  the  readPort,  searchPort  and  the  modifyPort  are
  303.          defined in  9, 10, and 11 respectively.
  304.          6.7    These ports are used only as a method of structuring  the  description  of
  305.          the Directory service. Conformance to the Directory operations  is  specified  in
  306.          Recommendation X.519.
  307.          7      Information types
  308.          7.1    Introduction
  309.          7.1.1  This paragraph  identifies,  and  in  some  cases  defines,  a  number  of
  310.          information types which are subsequently used  in  the  definition  of  Directory
  311.          operations. The information types concerned are those which are  common  to  more
  312.          than one operation, are likely to be in the future,  or  which  are  sufficiently
  313.          complex or self-contained as to merit being defined separately from the operation
  314.          which uses them.
  315.          7.1.2  Several of the information types used in the definition of  the  Directory
  316.          service are actually  defined  elsewhere.  Paragraph  7.2  identifies  types  and
  317.          indicates the source of their definition. Each of the remaining   (7.3  to  7.10)
  318.          identifies and defines an information type.
  319.          7.2    Information types defined elsewhere
  320.          7.2.1  The following information types are defined in Recommendation X.501:
  321.                a)  Attribute;
  322.                b)  AttributeType;
  323.                c)  AttributeValue;
  324.                d)  AttributeValueAssertion;
  325.                e)  DistinguishedName;
  326.                f)  Name;
  327.                g)  RelativeDistinguishedName.
  328.          7.2.2  The following information type is defined in Recommendation X.520:
  329.                a)  PresentationAddress.
  330.  
  331.  
  332.  
  333.  
  334.  
  335.  
  336.  
  337.  
  338.  
  339.  
  340.  
  341.  
  342.  
  343.  
  344.  
  345.  
  346.  
  347.  
  348.  
  349.  
  350.  
  351.  
  352.  
  353.  
  354.                                                       Fascicle VIII.8 - Rec. X.511   PAGE1
  355.  
  356.          7.2.3  The following information types are defined in Recommendation X.509:
  357.                a)  Certificate;
  358.                b)  SIGNED;
  359.                c)  CertificationPath.
  360.          7.2.4  The following information type is defined in Recommendation X.219:
  361.                a)  InvokeID.
  362.          7.2.5  The following information types are defined in Recommendation X.518:
  363.                a)  OperationProgress;
  364.                b)  ContinuationReference.
  365.          7.3    Common arguments
  366.          7.3.1  The CommonArguments information may be present to qualify  the  invocation
  367.          of each operation that the Directory can perform.
  368.                CommonArguments ::=     SET {
  369.                   [30]   ServiceControls DEFAULT { },
  370.                   [29]   SecurityParameters DEFAULT { },
  371.                   requestor [28] DistinguishedName
  372.                                        OPTIONAL,
  373.                   [27]   OperationProgress DEFAULT notStarted,
  374.                   aliasedRDNs [26] INTEGER OPTIONAL,
  375.                   extensions [25] SET OF EXTENSION OPTIONAL}
  376.                Extension ::=    SET {
  377.                   identifier     [0] INTEGER,
  378.                   critical       [1] BOOLEAN DEFAULT FALSE,
  379.                   item           [2] ANY DEFINED BY identifier}
  380.          7.3.2  The various components  have  the  meanings  as  defined  in   7.3.2.1  to
  381.          7.3.2.4.
  382.          7.3.2.1   The ServiceControls component is specified  in   7.5.  Its  absence  is
  383.          deemed equivalent to there being an empty set of controls.
  384.          7.3.2.2   The SecurityParameters component is specified in  7.9. Its  absence  is
  385.          deemed equivalent to there being an empty set of security parameters.
  386.          7.3.2.3    The  requestor  DistinguishedName  identifies  the  originator  of   a
  387.          particular abstract- operation. It holds the name of the user  as  identified  at
  388.          the time of binding to the Directory. It may be required when the request  is  to
  389.          be signed (see  7.10), and shall hold the name of  the  user  who  initiated  the
  390.          request.
  391.          7.3.2.4   The OperationProgress defines the role that the DSA is to play  in  the
  392.          distributed  evaluation  of  the  request.  It   is   more   fully   defined   in
  393.          Recommendation X.518.
  394.          7.3.2.5   The  aliasedRDNs  component  indicates  to  the  DSA  that  the  object
  395.          component of the operation was created by the dereferencing of  an  alias  on  an
  396.          earlier operation attempt. The integer value indicates the number of RDNs in  the
  397.          object that came from dereferencing the alias. (The value would have been set  in
  398.          the referral response of the previous operation.)
  399.          7.3.2.6   The extensions component provides a mechanism to  express  standardized
  400.          extensions to the form of the argument of a Directory abstract-operation.
  401.                Note - The form of the result of such  an  extended  abstract-operation  is
  402.          identical to that of the non-extended version.  (Nonetheless,  the  result  of  a
  403.          particular  extended  abstract-operation  may  differ   from   its   non-extended
  404.          counterpart).
  405.                The subcomponents are as defined in  7.3.2.6.1 to 7.3.2.6.3.
  406.          7.3.2.6.1 The identifier serves to identify a particular  extension.   Values  of
  407.          this component shall be assigned only  by  future  versions  of  this  series  of
  408.          Recommendations.
  409.          7.3.2.6.2 The  critical  subcomponent  allows  the  originator  of  the  extended
  410.          abstract-operation to indicate that the performance of only the extended form  of
  411.          the abstract-operation is acceptable (i.e. that  the  non-extended  form  is  not
  412.          acceptable). In  this  case  the  extension  is  a  critical  extension.  If  the
  413.          Directory, or some part of it, is unable  to  perform  a  critical  extension  it
  414.          returns an indication  of  unavailableCriticalExtension  (as  a  ServiceError  or
  415.          PartialOutcomeQualifier).  If the Directory is unable  to  perform  an  extension
  416.          which is not critical, it ignores the presence of the extension.
  417.          7.3.2.6.3 The item subcomponent provides the information needed for the Directory
  418.          to perform the extended form of the abstract-operation.
  419.          7.4    Common results
  420.          7.4.1  The CommonResults information should be present to qualify the  result  of
  421.  
  422.  
  423.  
  424.  
  425.          PAGE26  Fascicle VIII.8 - Rec. X.511
  426.  
  427.          each retrieval operation that the Directory can perform.
  428.                CommonResults     ::=   SET {
  429.                   [30] SecurityParameters    OPTIONAL,
  430.                   performer [29] DistinguishedName
  431.                                        OPTIONAL,
  432.                aliasDereferenced [28]        BOOLEAN
  433.                                 DEFAULT FALSE}
  434.          7.4.2  The various components  have  the  meanings  as  defined  in   7.4.2.1  to
  435.          7.4.2.3.
  436.          7.4.2.1   The SecurityParameters component is specified in  7.9. Its  absence  is
  437.          deemed equivalent to there being an empty set of security parameters.
  438.          7.4.2.2    The  performer  DistinguishedName  identifies  the  performer   of   a
  439.          particular operation. It may be required when the result is  to  be  signed  (see
  440.           7.10), and shall hold the name of the DSA which signed the result.
  441.          7.4.2.3   The aliasDereferenced Component is set to TRUE when the purported  name
  442.          of an object or base object which is the target  of  the  operation  included  on
  443.          alias which was dereferenced.
  444.          7.5    Service controls
  445.          7.5.1  A ServiceControls parameter contains the controls, if  any,  that  are  to
  446.          direct or constrain the provision of the service.
  447.                ServiceControls   ::=   SET {
  448.                   options [0] BIT STRING {
  449.                       preferChaining(0)
  450.                       chainingProhibited (1),
  451.                       localScope (2),
  452.                       dontUseCopy (3),
  453.                       dontDereferenceAliases(4)}
  454.                       DEFAULT {},
  455.                priority [1] INTEGER {
  456.                   low (0),
  457.                   medium (1),
  458.                   high (2) } DEFAULT medium,
  459.                timeLimit [2]     INTEGER OPTIONAL,
  460.                sizeLimit [3]     INTEGER OPTIONAL,
  461.                scopeOfReferral [4] INTEGER {
  462.                                  dmd(0),
  463.                                  country(1)}
  464.                                  OPTIONAL }
  465.          7.5.2  The various components  have  the  meanings  as  defined  in   7.5.2.1  to
  466.          7.5.2.5.
  467.          7.5.2.1   The options component contains a number of indications, each of  which,
  468.          if set, asserts the condition suggested. Thus:
  469.                a)  preferChaining indicates that the preference is that chaining,  rather
  470.                   than referrals, be used to provide the service. The  Directory  is  not
  471.                   obliged to follow this preference;
  472.                b)  chainingProhibited indicates  that  chaining,  and  other  methods  of
  473.                   distributing the request around the Directory, are prohibited;
  474.                c)  localScope indicates that the operation is to be limited  to  a  local
  475.                   scope. The definition of this option is  itself  a  local  matter.  For
  476.                   example, within a single DSA or a single DMD;
  477.                d)   dontUseCopy  indicates  that  copied  information  (as   defined   in
  478.                   Recommendation X.518) shall not be used to provide the service;
  479.                e)  dontDereferenceAliases indicate that any alias used  to  identify  the
  480.  
  481.  
  482.  
  483.  
  484.  
  485.  
  486.  
  487.  
  488.  
  489.  
  490.  
  491.  
  492.  
  493.  
  494.  
  495.  
  496.                                                       Fascicle VIII.8 - Rec. X.511   PAGE1
  497.  
  498.                entry affected by an operation is not to be dereferenced;
  499.                Note - This is necessary to  allow  reference  to  an  alias  entry  itself
  500.          rather than the aliased entry, e.g. in order to read the alias entry.
  501.                If this component is omitted, the following are assumed: no preference  for
  502.          chaining but chaining not prohibited, no limit on the scope of the operation, use
  503.          of copy permitted, and aliases will be dereferenced (except for modify operations
  504.          where aliases will never be dereferenced).
  505.          7.5.2.2   The priority (low, medium or high)  at  which  the  service  is  to  be
  506.          provided. Note that this is not a guaranteed service  in  that  Directory,  as  a
  507.          whole, does not implement queuing. There is no relationship implied with the  use
  508.          of "priorities" in underlying layers.
  509.          7.5.2.3   The timeLimit indicates the maximum elapsed time,  in  seconds,  within
  510.          which the service shall be provided. If the constraint cannot be met, an error is
  511.          reported. If this component is omitted, no time limit is implied. In the case  of
  512.          time limit exceeded on a List or Search, the result is an arbitrary selection  of
  513.          the accumulated results.
  514.                Note - This component does not imply the length of  time  spent  processing
  515.          the request during the elapsed time: any  number  of  DSAs  may  be  involved  in
  516.          processing the request during the elapsed time.
  517.          7.5.2.4   The sizeLimit is only applicable to  List  and  Search  operations.  It
  518.          indicates the maximum number of objects to be returned. In the case of size limit
  519.          exceeded, the results of List and Search may be an  arbitrary  selection  of  the
  520.          accumulated results, equal in number to the size limit. Any further results shall
  521.          be discarded.
  522.          7.5.2.5   The scopeOfReferral indicates the scope to which a referral returned by
  523.          a DSA should be relevant. Depending on whether  the  value  dmd  or  country  are
  524.          selected, only referrals  to  other  DSAs  within  the  selected  scope  will  be
  525.          returned.
  526.                This applies to the referrals in both a ReferralError  and  the  unexplored
  527.          parameter of List and Search results.
  528.          7.5.3  Certain combinations of priority, timeLimit, and sizeLimit may  result  in
  529.          conflicts.  For example, a short time limit could conflict with low  priority;  a
  530.          high size limit could conflict with a low time limit, etc.
  531.          7.6    Entry information selection
  532.          7.6.1  An EntryInformationSelection parameter indicates what information is being
  533.          requested from an entry in a retrieval service.
  534.                EntryInformationSelection ::=  SET {
  535.                   attributeTypes
  536.                       CHOICE {
  537.                                 allAttributes [0] NULL,
  538.                                 select [1]] SET OF AttributeType
  539.                                 - -empty set implies no attributes
  540.                                 - -are requested- -}
  541.                       DEFAULT allAttributes NULL,
  542.                   InfoTypes [2] INTEGER {
  543.                       attributeTypesOnly (0),
  544.                       attributeTypesAndValues (1) }
  545.                       DEFAULT attributeTypesAndValues }
  546.          7.6.2  The various components have  the  meanings  as  defined  in   7.6.2.1  and
  547.          7.6.2.2.
  548.          7.6.2.1   The attributeTypes component specifies  the  set  of  attributes  about
  549.          which information is requested:
  550.  
  551.  
  552.  
  553.  
  554.  
  555.  
  556.  
  557.  
  558.  
  559.  
  560.  
  561.  
  562.  
  563.  
  564.  
  565.  
  566.  
  567.          PAGE26  Fascicle VIII.8 - Rec. X.511
  568.  
  569.                   a)  if the select option is chosen, then the  attributes  involved  are
  570.                   listed. If the list is empty, then  no  attributes  will  be  returned.
  571.                   Information about  a  selected  attribute  shall  be  returned  if  the
  572.                   attribute  is  present.  An  AttributeError  with  the  noSuchAttribute
  573.                   problem shall only be returned if none of the  attributes  selected  is
  574.                   present;
  575.                b)  if the allAttributes option is selected, then information is requested
  576.                   about all attributes in the entry.
  577.                Attribute information is only returned if access rights are  sufficient.  A
  578.          SecurityError (with an insufficientAccessRights problem) will only be returned in
  579.          the case where access  rights  preclude  the  reading  of  all  attribute  values
  580.          requested.
  581.          7.6.2.2   The infoTypes component  specifies  whether  both  attribute  type  and
  582.          attribute value information (the default) or attribute type information  only  is
  583.          requested. If the attributeTypes component ( 7.6.2.1) is such as  to  request  no
  584.          attributes, then this component is not meaningful.
  585.          7.7    Entry information
  586.          7.7.1  An EntryInformation parameter conveys selected information from an entry.
  587.                EntryInformation  ::=   SEQUENCE {
  588.                   DistinguishedName,
  589.                   fromEntry BOOLEAN DEFAULT TRUE,
  590.                   SET OF CHOICE {
  591.                       AttributeType,
  592.                       Attribute} OPTIONAL }
  593.          7.7.2  The DistinguishedName of the entry is always included.
  594.          7.7.3  The fromEntry parameter indicates whether  the  information  was  obtained
  595.          from the entry (TRUE) or a copy of the entry (FALSE).
  596.          7.7.4  A set of AttributeTypes or Attributes are included, if relevant,  each  of
  597.          which may be alone or accompanied by one or more attribute values.
  598.          7.8    Filter
  599.          7.8.1  A Filter parameter applies a test that is either satisfied  or  not  by  a
  600.          particular entry. The filter is  expressed  in  terms  of  assertions  about  the
  601.          presence or value of certain attributes of the entry, and  is  satisfied  if  and
  602.          only if it evaluates to TRUE.
  603.                Note - A Filter may be TRUE, FALSE, or undefined.
  604.                Filter ::= CHOICE {
  605.                   item     [0]   FilterItem,
  606.                   and     [1]     SET OF Filter,
  607.                   or      [2]     SET OF Filter,
  608.                   not     [3]     Filter }
  609.                FilterItem ::=    CHOICE {
  610.                   equality       [0]   AttributeValueAssertion,
  611.                   substrings     [1]   SEQUENCE {
  612.                       type       AttributeType,
  613.                       strings SEQUENCE OF CHOICE {
  614.                              Initial         [0]   AttributeValue,
  615.                              any       [1]   AttributeValue,
  616.                              final           [2]   AttributeValue}},
  617.  
  618.  
  619.  
  620.  
  621.  
  622.  
  623.  
  624.  
  625.  
  626.  
  627.  
  628.  
  629.  
  630.  
  631.  
  632.  
  633.  
  634.  
  635.  
  636.  
  637.  
  638.                                                       Fascicle VIII.8 - Rec. X.511   PAGE1
  639.  
  640.                       greaterOrEqual [2]   AttributeValueAssertion,
  641.                   lessOrEqual    [3]   AttributeValueAssertion,
  642.                   present              [4]   AttributeType,
  643.                   approximateMatch     [5]   AttributeValueAssertion }
  644.          7.8.2  A Filter is either a FilterItem (see  7.8.3), or an  expression  involving
  645.          simpler Filters composed together using the logical operators and, or,  and  not.
  646.          The Filter is undefined if it is a  FilterItem  which  is  undefined,  or  if  it
  647.          involves one or more simpler Filters, all  of  which  are  undefined.  Otherwise,
  648.          where the Filter is:
  649.                a)  an item, it is TRUE if and only if  the  corresponding  FilterItem  is
  650.                   TRUE;
  651.                b)  an and, it is TRUE unless any of the nested Filters is FALSE;
  652.                   Note - Thus, if there are no nested Filters the and evaluates to TRUE.
  653.                c)  an or, it is FALSE unless any of the nested Filters is TRUE;
  654.                   Note - Thus, if there are no nested Filters the or evaluates to FALSE.
  655.                d)  a not, it is TRUE if and only if the nested Filter is FALSE.
  656.          7.8.3  A FilterItem is  an  assertion  about  the  presence  or  value(s)  of  an
  657.          attribute of a particular type in the entry under test. Each  such  assertion  is
  658.          TRUE, FALSE, or undefined.
  659.          7.8.3.1    Every  FilterItem  includes  an  AttributeType  which  identifies  the
  660.          particular attribute concerned.
  661.          7.8.3.2   Any assertion about the value of such an attribute is only  defined  if
  662.          the AttributeType is known, and the purported AttributeValue(s) conforms  to  the
  663.          attribute syntax defined for that attribute type.
  664.                Note 1 - Where these conditions are not met the FilterItem is undefined.
  665.                Note 2 - Access control restrictions may require  that  the  FilterItem  be
  666.          considered undefined. 
  667.          7.8.3.3   Assertions about the value of an  attribute  are  evaluated  using  the
  668.          matching rules associated with the attribute syntax defined  for  that  attribute
  669.          type. A matching rule not defined for a particular  attribute  syntax  cannot  be
  670.          used to make assertions about that attribute.
  671.                Note - Where this condition is not met, the FilterItem is undefined.
  672.          7.8.3.4   A FilterItem may be undefined (as described  in   7.8.3.2  and  7.8.3.3
  673.          above). Otherwise, where the FilterItem asserts:
  674.                a)  equality, it is TRUE if and only if there is a value of the  attribute
  675.                   which is equal to that asserted;
  676.                b)  substrings, it is TRUE if and only if there is a value of the attribute 
  677.                   in which the specified  substrings  appear  in  the  given  order.  The
  678.                   substrings  shall  be  non-overlapping,  and  may  (but  need  not)  be
  679.                   separated from the ends of the attribute value and from one another  by
  680.                   zero or more string elements.
  681.                   If initial is present, the substring shall match the initial  substring
  682.                   of the attribute value; if final is present, the substring shall  match
  683.                   the final substring of the attribute value;  if  any  is  present,  the
  684.                   substring may match any substring in the attribute value;
  685.                c)  greaterOrEqual, it is TRUE if and only if the  relative  ordering  (as
  686.                   defined by the appropriate  ordering  algorithm)  places  the  supplied
  687.                   value before or equal to any value of the attribute;
  688.                d)  lessOrEqual, it is TRUE if and  only  if  the  relative  ordering  (as
  689.                   defined by the appropriate  ordering  algorithm)  places  the  supplied
  690.                   value after or equal to any value of the attribute;
  691.                e)  present, it is TRUE if and only if such an attribute is present in the
  692.                   entry;
  693.                f)  approximateMatch, it is TRUE if and only if there is a  value  of  the
  694.                   attribute which matches that which is asserted by some  locally-defined
  695.                   approximate matching  algorithm  (e.g.  spelling  variations,  phonetic
  696.                   match, etc.). There are no specific guidelines for approximate matching
  697.                   in this version of the Recommendation. If approximate matching  is  not
  698.                   supported, this FilterItem should be treated as a match for equality.
  699.          7.9    Security Parameters
  700.          7.9.1  The SecurityParameters govern the operation of various  security  features
  701.          associated with a Directory operation.
  702.                Note - These parameters are conveyed from sender to  recipient.  Where  the
  703.          parameters appear in the argument of an abstract-operation the requestor  is  the
  704.          sender, and the performer is the recipient. In a result, the roles are reversed.
  705.  
  706.  
  707.  
  708.  
  709.          PAGE26  Fascicle VIII.8 - Rec. X.511
  710.  
  711.                SecurityParameters      ::=         SET {
  712.                   certification-path               [0]
  713.                   CertificationPath    OPTIONAL,
  714.                   name     [1]   DistinguishedName
  715.                                        OPTIONAL,
  716.                time               [2]   UTCTime OPTIONAL,
  717.                random       [3]   BIT STRING OPTIONAL,
  718.                target            [4]   ProtectionRequest OPTIONAL
  719.                                                    }
  720.                   ProtectionRequest    ::=   INTEGER {
  721.                                                none(0),
  722.                                                signed (1)}
  723.          7.9.2  The various components  have  the  meanings  as  defined  in   7.9.2.1  to
  724.          7.9.2.5.
  725.          7.9.2.1   The CertificationPath component consists of the  sender's  certificate,
  726.          and, optionally, a sequence of certificate pairs.  The  certificate  is  used  to
  727.          associate the sender's public key and distinguished name,  and  may  be  used  to
  728.          verify the signature on the argument or result. This parameter shall  be  present
  729.          if the argument or result is signed. The sequence of certification pairs consists
  730.          of certification authority cross certificates. It is used to enable the  sender's
  731.          certificate to be validated. It is not required if the recipient shares the  same
  732.          certification authority as the sender. If the recipient requires a valid  set  of
  733.          certificate pairs, and this parameter  is  not  present,  whether  the  recipient
  734.          rejects the signature on the argument or result,  or  attempts  to  generate  the
  735.          certification path, is a local matter.
  736.          7.9.2.2   The name is the distinguished name of the first intended  recipient  of
  737.          the argument or result. For example, if a DUA generates a  signed  argument,  the
  738.          name is the distinguished name of the DSA to which the operation is submitted.
  739.          7.9.2.3   The time is the intended expiry time for the validity of the signature,
  740.          when signed arguments are used. It is used in conjunction with the random  number
  741.          to enable the detection of replay attacks.
  742.          7.9.2.4   The random component is a number which should  be  different  for  each
  743.          unexpired token. It is used in conjunction with the time parameter to enable  the
  744.          detection of replay attacks when the argument or result has been signed.
  745.          7.9.2.5   The target ProtectionRequest may appear only  in  the  request  for  an
  746.          operation to be carried out, and indicates the requestor's  preference  regarding
  747.          the degree of protection to be provided to the result. Two levels  are  provided:
  748.          none (no protection requested), and signed (the Directory is  requested  to  sign
  749.          the result, the default). The degree  of  protection  actually  provided  to  the
  750.          result is indicated by the form of result and may be equal to or lower than  that
  751.          requested, based on the limitations of the Directory.
  752.          7.10   OPTIONALLY-SIGNED
  753.          7.10.1 An OPTIONALLY-SIGNED information type is one  whose  values  may,  at  the
  754.          option of  the  generator,  be  accompanied  by  their  digital  signature.  This
  755.          capability is specified by means of the following macro:
  756.                OPTIONALLY-SIGNED MACRO  ::=
  757.                BEGIN
  758.                TYPE NOTATION     ::=   type (Type)
  759.                VALUE NOTATION    ::=   value (VALUE
  760.                      CHOICE      { Type, SIGNED Type})
  761.                END
  762.          7.10.2 The SIGNED macro, which describes the form  of  the  signed  form  of  the
  763.          information, is specified in Recommendation X.509.
  764.          8      Bind and unbind operations
  765.                The DirectoryBind and DirectoryUnbind operations, defined in  8.1 and   8.2
  766.          respectively, are used by the DUA at the beginning and end of a particular period
  767.          of accessing the Directory.
  768.          8.1    Directory bind
  769.          8.1.1  A DirectoryBind operation  is  used  at  the  beginning  of  a  period  of
  770.          accessing the Directory.
  771.                DirectoryBind           ::=   ABSTRACT-BIND
  772.                   TO { readPort, searchPort, modifyPort }
  773.                   BIND
  774.                   ARGUMENT DirectoryBindArgument
  775.                   RESULT   DirectoryBindResult
  776.  
  777.  
  778.  
  779.  
  780.                                                       Fascicle VIII.8 - Rec. X.511   PAGE1
  781.  
  782.                   BIND-ERROR     DirectoryBindError
  783.                DirectoryBindArgument   ::=   SET {
  784.                   credentials          [0]   Credentials  OPTIONAL,
  785.                   versions                   [1]   Versions DEFAULT
  786.                                              v1988}
  787.                Credentials       ::=   CHOICE {
  788.                   simple         [0]   SimpleCredentials,
  789.                   strong         [1]   StrongCredentials,
  790.                   externalProcedure [2] EXTERNAL }
  791.                SimpleCredentials ::=   SEQUENCE {
  792.                   name           [0]   DistinguishedName,
  793.                   validity             [1]   SET {
  794.                       time1            [0]   UTCTime OPTIONAL,
  795.                       Time2            [1]   UTCTime OPTIONAL,
  796.                       random1    [2]   BIT STRING OPTIONAL,
  797.                       random2    [3]   BIT STRING OPTIONAL } OPTIONAL,
  798.                       -- in most instances the argument for
  799.                       -- time and random are relevant in
  800.                       -- dialogues employing protected password
  801.                       -- mechanisms and derive their meaning
  802.                       -- as per bilateral agreements
  803.                password  [2]     OCTET STRING OPTIONAL }
  804.                   -- the value could be an unprotected
  805.                   -- password or Protected1 or Protected2
  806.                   -- as specified in Recommendation X.509.
  807.                StrongCredentials ::=   SET {
  808.                   certification-path[0]      CertificationPath
  809.                                              OPTIONAL,
  810.                   bind-token           [1]         Token }  
  811.                Token        ::=   SIGNED SEQUENCE {
  812.                   algorithm            [0]   AlgorithmIdentifier,
  813.                   name           [1]   DistinguishedName,
  814.                   time                 [2]   UTCTime,
  815.  
  816.  
  817.  
  818.  
  819.  
  820.  
  821.  
  822.  
  823.  
  824.  
  825.  
  826.  
  827.  
  828.  
  829.  
  830.  
  831.  
  832.  
  833.  
  834.  
  835.  
  836.  
  837.  
  838.  
  839.  
  840.  
  841.  
  842.  
  843.  
  844.  
  845.  
  846.  
  847.  
  848.  
  849.  
  850.  
  851.          PAGE26  Fascicle VIII.8 - Rec. X.511
  852.  
  853.                   random         [3]   BIT STRING }
  854.                Versions          ::=   BIT STRING {v1988(0)}
  855.                DirectoryBindResult     ::=   DirectoryBindArgument
  856.                DirectoryBindError            ::=         SET {
  857.                   versions       [0]   Versions DEFAULT v1988,
  858.                   CHOICE {
  859.                       serviceError           [1]   ServiceProblem
  860.                       securityError          [2]   SecurityProblem
  861.                }}
  862.          8.1.2  The various arguments have the meanings as defined in  8.1.2.1 to 8.1.2.2.
  863.          8.1.2.1   The Credentials of the DirectoryBindArgument  allow  the  Directory  to
  864.          establish the identity of the  user.  They  may  be  either  simple,  strong  (as
  865.          described in Recommendation X.509) or externally defined (externalProcedure).
  866.          8.1.2.1.1 SimpleCredentials consist of a name (always the distinguished  name  of
  867.          an object) and (optionally)  a  password.  This  provides  a  limited  degree  of
  868.          security.   If   the   password   is   protected   as   described   in    5    of
  869.          Recommendation  X.509,  then  SimpleCredentials  includes  name,   password   and
  870.          (optionally) time and/or random numbers which are used to detect replay. In  some
  871.          instances a protected password may be  checked  by  an  object  which  knows  the
  872.          password only after locally regenerating the protection to its own  copy  of  the
  873.          password and computing the result with the value in the bind argument (password).
  874.          In other instances a direct compare may be possible.
  875.          8.1.2.1.2  StrongCredentials  consist  of  a  bind  token  and,   optionally,   a
  876.          certificate and sequence of certification-authority cross-certificate (as defined
  877.          in Recommendation X.509). This enables the Directory to authenticate the identity
  878.          of the request establishing the association, and vice versa.
  879.                The arguments of the bind token are  used  as  follows:  algorithm  is  the
  880.          identifier of the algorithm employed to sign the information; name is the name of
  881.          the intended recipient. The time parameter contains the expiry time of the token.
  882.          The random number is a number which should be different for each unexpired token,
  883.          and may be used by the recipient to detect replay attacks.
  884.          8.1.2.1.3 If externalProcedure is used then the semantics of  the  authentication
  885.          scheme being used is outside the scope of the Directory document.
  886.          8.1.2.2   The Versions  argument  of  the  DirectoryBindArgument  identifies  the
  887.          versions of the service which the DUA is prepared to  participate  in.  For  this
  888.          version of the protocol the value shall be set to v1988(0).
  889.          8.1.2.3   Migration to future versions of the Directory should be facilitated by:  
  890.                a)  any elements of DirectoryBindArgument other than those defined in this
  891.                   Recommendation shall be accepted and ignored;
  892.                b)  additional options  for  named  bits  of  DirectoryBindArgument  (e.g.
  893.                   Versions) not defined shall be accepted and ignored.
  894.          8.1.3  Should the bind request succeed, a result will  be  returned.  The  result
  895.          parameters have the meanings as defined in  8.1.3.1 and 8.1.3.2.
  896.          8.1.3.1   The Credentials of the DirectoryBindResult allow the user to  establish
  897.          the identity of the DSA. They allow information  identifying  the  DSA  (that  is
  898.          directly providing the Directory service)  to be conveyed to the DUA. They  shall
  899.          be of the same form (i.e. CHOICE) as those supplied by the user.
  900.          8.1.3.2   The Versions parameter of the DirectoryBindResult  indicates  which  of
  901.          the versions of the service requested by the DUA is actually going to be provided
  902.          by this DSA.
  903.          8.1.4  Should the bind request fail, a bind error will be returned as defined  in
  904.           8.1.4.1 and       8.1.4.2.
  905.          8.1.4.1   The  Versions  parameter  of  the  DirectoryBindError  indicates  which
  906.          versions are supported by this DSA.
  907.          8.1.4.2   A securityError or serviceError shall be supplied as follows:
  908.                -   securityError  inappropriateAuthentication
  909.                                   invalidCredentials
  910.                -   serviceError   unavailable.
  911.          8.2    Directory unbind
  912.          8.2.1  A DirectoryUnbind operation is used at the end of a  period  of  accessing
  913.          the Directory.
  914.                DirectoryUnbind   ::=   ABSTRACT-UNBIND
  915.                   FROM {readPort, searchPort, modifyPort }
  916.          8.2.2  The DirectoryUnbind has no arguments.
  917.          9      Directory read operations
  918.  
  919.  
  920.  
  921.  
  922.                                                       Fascicle VIII.8 - Rec. X.511   PAGE1
  923.  
  924.                There are two "read-like" operations:  Read and Compare,  defined  in   9.1
  925.          and 9.2, respectively. The Abandon operation, defined in  9.3,  is  grouped  with
  926.          the Read operations for convenience.
  927.          9.1    Read
  928.          9.1.1  A Read operation  is  used  to  extract  information  from  an  explicitly
  929.          identified entry. It may also  be  used  to  verify  a  distinguished  name.  The
  930.          arguments of the operation may optionally be signed (see  7.10) by the requestor.
  931.          If so requested, the Directory may sign the result.
  932.                Read   ::= ABSTRACT-OPERATION
  933.                      ARGUMENT               ReadArgument
  934.                      RESULT     ReadResult
  935.                      ERRORS {
  936.                          AttributeError, NameError,
  937.                          ServiceError, Referral, Abandoned,
  938.                          SecurityError }
  939.                ReadArgument ::=  OPTIONALLY-SIGNED SET {
  940.                      object           [0]   Name,
  941.                      selection  [1]   Selection F13 EntryInformationSelection
  942.                                        DEFAULT {}
  943.                   COMPONENTS OF CommonArguments }
  944.                ReadResult              ::=   OPTIONALLY-SIGNED SET {
  945.                      entry                  [0]   EntryInformation,
  946.                      COMPONENTS OF CommonResults }
  947.          9.1.2  The various arguments have the meanings as defined in  9.1.2.1 to 9.1.2.3.
  948.          9.1.2.1   The  object  argument  identifies  the  object  entry  from  which  the
  949.          information is requested.  Should the Name involve one or more aliases, they  are
  950.          dereferenced (unless this is prohibited by the relevant service controls).
  951.          9.1.2.2   The selection argument indicates what information  from  the  entry  is
  952.          requested (see  7.6).
  953.          9.1.2.3   The CommonArguments (see  7.3) include a specification of  the  service
  954.          controls applying to  the  request.  For  the  purposes  of  this  operation  the
  955.          sizeLimit component is not relevant and is ignored if provided.
  956.          9.1.3  Should the request succeed, the  result  will  be  returned.   The  result
  957.          parameters have the meanings as defined in  9.1.3.1 and  7.4.
  958.          9.1.3.1   The entry result parameter holds the requested information (see  7.7).
  959.          9.1.4  Should the request fail, one of the listed errors  will  be  reported.  If
  960.          none of the attributes explicitly listed in selection can be  returned,  then  an
  961.          AttributeError with problem noSuchAttribute will be reported.  The  circumstances
  962.          under which other errors will be reported are defined in  12.
  963.          9.2    Compare
  964.          9.2.1  A Compare operation is used to compare a value (which is  supplied  as  an
  965.          argument of the request) with the value(s) of a particular attribute  type  in  a
  966.          particular object entry. The arguments of the operation may optionally be  signed
  967.          (see  7.10) by the requestor.  If  so  requested,  the  Directory  may  sign  the
  968.          result.
  969.                Compare   ::=     ABSTRACT-OPERATION
  970.                   ARGUMENT       CompareArgument
  971.                   RESULT   CompareResult
  972.                   ERRORS {
  973.                       AttributeError, NameError,
  974.                       ServiceError, Referral, Abandoned,
  975.                       SecurityError }
  976.  
  977.  
  978.  
  979.  
  980.  
  981.  
  982.  
  983.  
  984.  
  985.  
  986.  
  987.  
  988.  
  989.  
  990.  
  991.  
  992.  
  993.          PAGE26  Fascicle VIII.8 - Rec. X.511
  994.  
  995.                   CompareArgument   ::=   OPTIONALLY-SIGNED
  996.                SET {
  997.                   object         [0]   Name,
  998.                   purported            [1]   AttributeValueAssertion,
  999.                   COMPONENTS OF CommonArguments }
  1000.                CompareResult           ::=   OPTIONALLY-SIGNED
  1001.                SET {
  1002.                   DistinguishedName          OPTIONAL,
  1003.                   matched              [0]   BOOLEAN,
  1004.                   from Entry     [1]   BOOLEAN DEFAULT TRUE,
  1005.                   COMPONENTS OF CommonResults }
  1006.          9.2.2  The various arguments have the meanings as defined in  9.2.2.1 to 9.2.2.3.
  1007.          9.2.2.1   The object  argument  is  the  name  of  the  particular  object  entry
  1008.          concerned. Should the Name involve one or more  aliases,  they  are  dereferenced
  1009.          (unless prohibited by the relevant service control).
  1010.          9.2.2.2   The purported argument identifies the attribute type and the  value  to
  1011.          be compared with that in the entry.
  1012.          9.2.2.3   The CommonArguments (see  7.3) specify the service controls applying to
  1013.          the request.  For the purposes of this operation the sizeLimit component  is  not
  1014.          relevant and is ignored, if provided.
  1015.          9.2.3  Should the request succeed (i.e. the comparison is actually carried  out),
  1016.          the result will be returned. The result parameters have the meanings as described
  1017.          in  9.2.3.1,  9.2.3.2 and  7.4.
  1018.          9.2.3.1   The DistinguishedName is present  if  an  alias  was  dereferenced  and
  1019.          represents the distinguished name of the object itself.
  1020.          9.2.3.2   The matched result parameter, holds the result of the  comparison.  The
  1021.          parameter takes the value TRUE if the values were compared and matched, and FALSE
  1022.          if they did not.
  1023.          9.2.3.3   If fromEntry is TRUE the information was compared against the entry; if
  1024.          FALSE some of the information was compared against a copy.
  1025.          9.2.4  Should the request fail, one of the listed errors will  be  reported.  The
  1026.          circumstances under which the particular errors will be reported are  defined  in
  1027.           12.
  1028.          9.3    Abandon
  1029.          9.3.1  Operations that interrogate the  Directory  may  be  abandoned  using  the
  1030.          Abandon operation if the user is no longer interested in the result.
  1031.                Abandon     ::=   ABSTRACT-OPERATION
  1032.                   ARGUMENT       AbandonArgument
  1033.                   RESULT   AbandonResult
  1034.                   ERRORS    {AbandonFailed}
  1035.                AbandonArgument   ::=   SEQUENCE {
  1036.                   InvokeID       [0]   InvokeID}
  1037.                AbandonResult           ::=   NULL
  1038.          9.3.2  There is a single argument, the InvokeID which  identifies  the  operation
  1039.          that is to be abandoned. The value of the invokeID is the same invokeID which was
  1040.          used to invoke the operation which is to be abandoned.
  1041.          9.3.3  Should the request  succeed,  a  result  will  be  returned,  although  no
  1042.          information will be conveyed with it. The original operation will  fail  with  an
  1043.          Abandoned error.
  1044.          9.3.4  Should the request fail, the AbandonFailed error will  be  reported.  This
  1045.          error is described in  12.3.
  1046.          9.3.5  Abandon is  only  applicable  to  interrogation  operations,  i.e.,  Read,
  1047.          Compare, List and Search.
  1048.          9.3.6  A DSA may abandon  an  operation  locally.  If  the  DSA  has  chained  or
  1049.          multicasted the operation to other DSAs, it may in turn request them  to  abandon
  1050.          the operation. A DSA may choose not to  abandon  the  operation  and  shall  then
  1051.          return the AbandonFailed error.
  1052.          10     Directory search operations
  1053.                There are two "search-like" operations: List and Search, defined  in   10.1
  1054.          and  10.2 respectively.
  1055.          10.1   List
  1056.          10.1.1 A List operation is used to obtain a list of the immediate subordinates of
  1057.          an explicitly identified entry. Under some circumstances, the list  returned  may
  1058.          be incomplete. The arguments of the  operation  may  optionally  be  signed  (see
  1059.           7.10) by the requestor. If so requested, the Directory may sign the result.
  1060.  
  1061.  
  1062.  
  1063.  
  1064.                                                       Fascicle VIII.8 - Rec. X.511   PAGE1
  1065.  
  1066.                List  ::=   ABSTRACT-OPERATION
  1067.                   ARGUMENT       ListArgument
  1068.                   RESULT      ListResult
  1069.                   ERRORS {
  1070.                                  NameError
  1071.                       ServiceError, Referral, Abandoned,
  1072.                       SecurityError }
  1073.                List Argument           ::=   OPTIONALLY-SIGNED SET {
  1074.                   object         [0]   Name,
  1075.                   COMPONENTS OF CommonArguments }
  1076.                ListResult  ::=   OPTIONALLY-SIGNED
  1077.                CHOICE {
  1078.                   listInfo SET {
  1079.                   DistinguishedName OPTIONAL,
  1080.                   subordinates [1]     SET OF SEQUENCE {
  1081.                       RelativeDistinguishedName,
  1082.                       aliasEntry [0]   BOOLEAN DEFAULT FALSE
  1083.                       fromEntry  [1]   BOOLEAN DEFAULT TRUE},
  1084.                   partialOutcomeQualifier [2]
  1085.                                        PartialOutcomeQualifier OPTIONAL
  1086.                   COMPONENTS OF CommonResults },
  1087.                   uncorrelatedListInfo [0] SET OF
  1088.                                         ListResult }
  1089.                PartialOutcomeQualifier ::=   SET {
  1090.                   limitProblem   [0]    LimitProblem
  1091.                       OPTIONAL,
  1092.                   unexplored     [1]   SET OF
  1093.                       ContinuationReference  OPTIONAL,
  1094.                   unavailableCriticalExtensions [2] BOOLEAN DEFAULT FALSE }
  1095.                LimitProblem ::=  INTEGER {
  1096.                   timeLimitExceeded (0),
  1097.                   sizeLimitExceeded (1),
  1098.                   administrativeLimitExceeded (2) }
  1099.  
  1100.  
  1101.  
  1102.  
  1103.  
  1104.  
  1105.  
  1106.  
  1107.  
  1108.  
  1109.  
  1110.  
  1111.  
  1112.  
  1113.  
  1114.  
  1115.  
  1116.  
  1117.  
  1118.  
  1119.  
  1120.  
  1121.  
  1122.  
  1123.  
  1124.  
  1125.  
  1126.  
  1127.  
  1128.  
  1129.  
  1130.  
  1131.  
  1132.  
  1133.  
  1134.  
  1135.          PAGE26  Fascicle VIII.8 - Rec. X.511
  1136.  
  1137.          10.1.2 The various arguments have the meanings as defined in  10.1.2.1 and  7.3.
  1138.          10.1.2.1  The object argument identifies the object entry (or possibly the  root)
  1139.          whose immediate subordinates are to be listed. Should the  Name  involve  one  or
  1140.          more aliases, they are dereferenced (unless prohibited by  the  relevant  service
  1141.          control).
  1142.          10.1.3 The request succeeds if the object is located regardless of whether  there
  1143.          is any subordinate information to return. The result parameters have the meanings
  1144.          as defined in  10.1.3.1 to 10.1.3.4 and  7.4.
  1145.          10.1.3.1  The DistinguishedName is present  if  an  alias  was  dereferenced.  It
  1146.          represents the distinguished name of the object itself.
  1147.          10.1.3.2  The subordinates parameter conveys the  information  on  the  immediate
  1148.          subordinate, if any, of the named entry. Should any of the subordinate entries be
  1149.          aliases, they will not be dereferenced.
  1150.          10.1.3.2.1    The RelativeDistinguishedName is that of the subordinate.
  1151.          10.1.3.2.2    The fromEntry  parameter  indicates  whether  the  information  was
  1152.          obtained from the entry (TRUE) or a copy of the entry (FALSE).
  1153.          10.1.3.2.3    The aliasEntry parameter indicates whether the subordinate entry is
  1154.          an alias entry (TRUE) or not (FALSE).
  1155.          10.1.3.3      The PartialOutcomeQualifier  consists  of  three  subcomponents  as
  1156.          defined in  10.1.3.3.1 to 10.1.3.3.3. This parameter shall  be  present  whenever
  1157.          the result is incomplete.
  1158.          10.1.3.3.1    The LimitProblem parameter indicates whether the  time  limit,  the
  1159.          size limit, or an administrative limit  has  been  exceeded.  The  results  being
  1160.          returned are those which were available when the limit was reached.
  1161.          10.1.3.3.2    The unexplored parameter shall be present if  regions  of  the  DIT
  1162.          were not explored. Its information allows the DUA to continue the  processing  of
  1163.          the List operation by contacting other  access  points  if  it  so  chooses.  The
  1164.          parameter consists of a set  (possibly  empty)  of  ContinuationReferences,  each
  1165.          consisting of the name  of  a  base  object  from  which  the  operation  may  be
  1166.          progressed, an appropriate value of OperationProgress, and a set of access points
  1167.          from which the request may be further progressed. The ContinuationReferences that
  1168.          are returned shall be within the scope of referral  requested  in  the  operation
  1169.          service control.
  1170.          10.1.3.3.3    The unavailableCriticalExtensions parameter indicates, if  present,
  1171.          that one or more critical  extensions  were  unavailable  in  some  part  of  the
  1172.          Directory.
  1173.          10.1.3.4      When the DUA has requested a  protection  request  of  signed,  the
  1174.          uncorrelatedListInfo parameter may comprise a number of sets of result parameters
  1175.          originating from and signed by different components of the Directory. If  no  DSA
  1176.          in the chain can correlate all the results, the  DUA  must  assemble  the  actual
  1177.          result from the various pieces.
  1178.          10.1.4 Should the request fail, one of the listed errors will  be  reported.  The
  1179.          circumstances under which the particular errors will be reported are  defined  in
  1180.           12.
  1181.          10.2   Search
  1182.          10.2.1 A Search operation is used to search a portion of the DIT for  entries  of
  1183.          interest and to return selected information from those entries. The arguments  of
  1184.          the operation may optionally be signed  (see   7.10)  by  the  requestor.  If  so
  1185.          requested, the Directory may sign the result.
  1186.                Search  ::= ABSTRACT-OPERATION
  1187.                   ARGUMENT       SearchArgument
  1188.                   RESULT   SearchResult
  1189.                   ERRORS {
  1190.                       AttributeError, NameError,
  1191.                       ServiceError, Referral, Abandoned,
  1192.                       SecurityError }
  1193.                SearchArgument  ::=  OPTIONALLY-SIGNED
  1194.                SET {
  1195.                   baseObject     [0]  Name,
  1196.                   subset         [1]  INTEGER {
  1197.                       baseObject       (0),
  1198.                       oneLevel   (1),
  1199.                       wholeSubtree(2)}  DEFAULT baseObject,
  1200.                   filter         [2]  Filter DEFAULT and {}.
  1201.                   searchAliases  [3]  BOOLEAN DEFAULT TRUE,
  1202.  
  1203.  
  1204.  
  1205.  
  1206.                                                       Fascicle VIII.8 - Rec. X.511   PAGE1
  1207.  
  1208.                   selection                  [4]  EntryInformationSelection DEFAULT {}
  1209.                       COMPONENTS OF CommonArguments }
  1210.  
  1211.  
  1212.  
  1213.  
  1214.  
  1215.  
  1216.  
  1217.  
  1218.  
  1219.  
  1220.  
  1221.  
  1222.  
  1223.  
  1224.  
  1225.  
  1226.  
  1227.  
  1228.  
  1229.  
  1230.  
  1231.  
  1232.  
  1233.  
  1234.  
  1235.  
  1236.  
  1237.  
  1238.  
  1239.  
  1240.  
  1241.  
  1242.  
  1243.  
  1244.  
  1245.  
  1246.  
  1247.  
  1248.  
  1249.  
  1250.  
  1251.  
  1252.  
  1253.  
  1254.  
  1255.  
  1256.  
  1257.  
  1258.  
  1259.  
  1260.  
  1261.  
  1262.  
  1263.  
  1264.  
  1265.  
  1266.  
  1267.  
  1268.  
  1269.  
  1270.  
  1271.  
  1272.  
  1273.  
  1274.  
  1275.  
  1276.  
  1277.          PAGE26  Fascicle VIII.8 - Rec. X.511
  1278.  
  1279.                   SearchResult    ::=     OPTIONALLY-SIGNED
  1280.                   CHOICE {
  1281.                   searchInfo SET {
  1282.                   DistinguishedName OPTIONAL,
  1283.                   entries  [0]   SET OF EntryInformation,
  1284.                   partialOutcomeQualifier
  1285.                       [2]PartialOutcomeQualifier OPTIONAL,
  1286.                COMPONENTS OF CommonResults },
  1287.                uncorrelatedSearchInfo [0] SET OF
  1288.                   SearchResult }
  1289.          10.2.2 The various arguments  have  the  meanings  as  defined  in   10.2.2.1  to
  1290.          10.2.2.3,  10.2.2.5, and  7.3.
  1291.          10.2.2.1  The baseObject argument identifies the object entry  (or  possibly  the
  1292.          root) relative to which the search is to take place.
  1293.          10.2.2.2  The subset argument indicates whether the search is to be applied to:
  1294.                a)  the baseObject only;
  1295.                b)  the immediate subordinates of the base object only (oneLevel);
  1296.                c)  the base object and all its subordinates (wholeSubtree).
  1297.          10.2.2.3  The filter argument is used to eliminate entries from the search  space
  1298.          which are not of interest. Information will only be  returned  on  entries  which
  1299.          satisfy the filter (see  7.8).
  1300.          10.2.2.4  Aliases shall be dereferenced while locating the base  object,  subject
  1301.          to the setting of the  dontDereferenceAliasesServiceControl.  Aliases  among  the
  1302.          subordinates of the base object     shall  be  dereferenced  during  the  search,
  1303.          subject to the setting of  the  searchAliases  parameter.  If  the  searchAliases
  1304.          parameter is TRUE, aliases shall be dereferenced,  if  the  parameter  is  FALSE,
  1305.          aliases shall not be dereferenced. If the searchAliases parameter  is  TRUE,  the
  1306.          search shall continue in the subtree of the aliased object.
  1307.          10.2.2.5  The selection argument indicates what information from the  entries  is
  1308.          requested (see  7.6).
  1309.          10.2.3 The request succeeds if the base object is located, regardless of  whether
  1310.          there are any subordinates to return.
  1311.                Note - As a corollary to  this,  the  outcome  of  an  (unfiltered)  Search
  1312.          applied to a single entry  may  not  be  identical  to  a  Read  which  seeks  to
  1313.          interrogate the same set of attributes of the entry. This is because  the  latter
  1314.          will return an AttributeError if none of the selected  attributes  exist  in  the
  1315.          entry.
  1316.                The result  parameters  have  the  meanings  as  defined  in   10.2.3.1  to
  1317.          10.2.3.4 and  7.3.
  1318.          10.2.3.1  The DistinguishedName is present if  an  alias  was  dereferenced,  and
  1319.          represents the distinguished name of the base object.
  1320.          10.2.3.2  The entries parameter conveys the requested information from each entry
  1321.          (zero or more)  which satisfied the filter (see  7.5).
  1322.          10.2.3.3  The PartialOutcomeQualifier consists of two subcomponents as  described
  1323.          for the List operation in 10.1.3.4.
  1324.          10.2.3.4    The   uncorrelatedSearchInfo   parameter   is   as   described    for
  1325.          uncorrelatedListInfo in  10.1.3.4.
  1326.          10.2.4 Should the request fail, one of the listed errors will  be  reported.  The
  1327.          circumstances under which the particular errors will be reported are  defined  in
  1328.           12.
  1329.          11     Directory modify operations
  1330.                There are four operations to modify the Directory:  AddEntry,  RemoveEntry,
  1331.          ModifyEntry and ModifyRDN defined in  11.1 to 11.4 respectively.
  1332.                Note 1 - Each of these abstract-operations identifies the target  entry  by
  1333.          means of its distinguished name.
  1334.                Note 2 - The success of AddEntry,  RemoveEntry,  and  ModifyRDN  operations
  1335.          will be dependent on the physical distribution of the DIB across  the  Directory.
  1336.          Failure will be reported with an UpdateError and problem affectsMultipleDSAs. See
  1337.          Recommendation X.518.
  1338.  
  1339.  
  1340.  
  1341.  
  1342.  
  1343.  
  1344.  
  1345.  
  1346.  
  1347.  
  1348.                                                       Fascicle VIII.8 - Rec. X.511   PAGE1
  1349.  
  1350.                11.1   Add entry
  1351.          11.1.1 An AddEntry operation is used to add a leaf entry (either an object entry,
  1352.          or an alias entry)  to the DIT. The arguments of the operation may optionally  be
  1353.          signed (see  7.10) by the requestor.
  1354.                AddEntry    ::=   ABSTRACT-OPERATION
  1355.                   ARGUMENT       AddEntryArgument
  1356.                   RESULT   AddEntryResult
  1357.                   ERRORS {
  1358.                       AttributeError, NameError,
  1359.                       ServiceError, Referral, SecurityError,
  1360.                       UpdateError }
  1361.                AddEntryArgument  ::=   OPTIONALLY-SIGNED
  1362.                SET {
  1363.                   object         [0]   DistinguishedName,
  1364.                   entry          [1]   SET OF Attribute,
  1365.                   COMPONENTS OF CommonArguments }
  1366.                AddEntryResult    ::=   NULL
  1367.          11.1.2 The various arguments  have  the  meanings  as  defined  in   11.1.2.1  to
  1368.          11.1.2.3.
  1369.          11.1.2.1  The object argument identifies the entry to  be  added.  Its  immediate
  1370.          superior, which  must  already  exist  for  the  operation  to  succeed,  can  be
  1371.          determined by removing the last RDN component (which belongs to the entry  to  be
  1372.          created).
  1373.          11.1.2.2  The entry argument contains the attribute information  which,  together
  1374.          with that from the RDN, constitutes the entry to be created. The Directory  shall
  1375.          ensure that the entry conforms to the Directory schema.  Where  the  entry  being
  1376.          created is an alias, no check  is  made  to  ensure  that  the  aliasedObjectName
  1377.          attribute points to a valid entry.
  1378.          11.1.2.3  The CommonArguments (see  7.3) include a specification of  the  service
  1379.          controls applying to  the  request.  For  the  purposes  of  this  operation  the
  1380.          dontDereferenceAlias option and the sizeLimit component are not relevant and  are
  1381.          ignored if provided. Aliases are never dereferenced by this operation.
  1382.          11.1.3 Should the request  succeed,  a  result  will  be  returned,  although  no
  1383.          information will be conveyed with it.
  1384.          11.1.4 Should the request fail, one of the listed errors will be  reported.   The
  1385.          circumstances under which the particular errors will be reported are  defined  in
  1386.           12.
  1387.          11.2   Remove Entry
  1388.          11.2.1 A RemoveEntry operation is used to remove a leaf entry (either  an  object
  1389.          entry or an alias entry) from  the  DIT.  The  arguments  of  the  operation  may
  1390.          optionally be signed (see  7.10) by the requestor.
  1391.                RemoveEntry ::=   ABSTRACT-OPERATION
  1392.                   ARGUMENT RemoveEntryArgument
  1393.                   RESULT         RemoveEntryResult
  1394.                   ERRORS {
  1395.                       NameError,
  1396.                       ServiceError, Referral, SecurityError,
  1397.                       UpdateError}
  1398.                RemoveEntryArgument ::= OPTIONALLY-SIGNED SET {
  1399.                   object   [0]   DistinguishedName,
  1400.                   COMPONENTS OF CommonArguments }
  1401.                RemoveEntryResult ::=  NULL
  1402.          11.2.2 The various arguments have  the  meanings  as  defined  in   11.2.2.1  and
  1403.          11.2.2.2.
  1404.          11.2.2.1  The object argument identifies the entry to be deleted.  Aliases in the
  1405.          name will not be dereferenced.
  1406.          11.2.2.2  The CommonArguments (see  7.3) include a specification of  the  service
  1407.          controls applying to  the  request.  For  the  purposes  of  this  operation  the
  1408.          dontDereferenceAlias option and the sizeLimit component are not relevant and  are
  1409.          ignored if provided. Aliases are never dereferenced by this operation.
  1410.          11.2.3 Should the request  succeed,  a  result  will  be  returned,  although  no
  1411.          information will be conveyed with it.
  1412.          11.2.4 Should the request fail, one of the listed errors will be  reported.   The
  1413.          circumstances under which the particular errors will be reported are  defined  in
  1414.           12.
  1415.  
  1416.  
  1417.  
  1418.  
  1419.          PAGE26  Fascicle VIII.8 - Rec. X.511
  1420.  
  1421.          11.3   Modify Entry
  1422.          11.3.1 The ModifyEntry operation is used to perform a series of one  or  more  of
  1423.          the following modifications to a single entry:
  1424.                a)  add a new attribute;
  1425.                b)  remove an attribute;
  1426.                c)  add attribute values;
  1427.                d)  remove attribute values;
  1428.                e)  replace attribute values;
  1429.                f)  modify an alias.
  1430.                The arguments of the operation may optionally be signed (see  7.10) by  the
  1431.          requestor.
  1432.                ModifyEntry             ::=   ABSTRACT-OPERATION
  1433.                   ARGUMENT ModifyEntryArgument
  1434.                   RESULT   ModifyEntryResult
  1435.                   ERRORS {
  1436.                       AttributeError, NameError,
  1437.                       ServiceError, Referral, SecurityError,
  1438.                       UpdateError }
  1439.                ModifyEntryArgument ::=       OPTIONALLY-SIGNED SET {
  1440.                   object         [0]   DistinguishedName,
  1441.                   changes              [1]   SEQUENCE OF EntryModification,
  1442.                   COMPONENTS OF CommonArguments }
  1443.                ModifyEntryResult   ::= NULL
  1444.                EntryModification ::=   CHOICE {
  1445.                   addAttribute   [0]         Attribute,
  1446.                   removeAttribute            [1]  AttributeType,
  1447.                   addValues                  [2]  Attribute,
  1448.                   removeValues   [3]   Attribute }
  1449.          11.3.2 The various arguments have  the  meanings  as  defined  in   11.3.2.1  and
  1450.          11.3.2.2.
  1451.          11.3.2.1  The object argument identifies the entry  to  which  the  modifications
  1452.          should be applied.  Any aliases in the name will not be dereferenced.
  1453.          11.3.2.2  The changes argument defines a sequence  of  modifications,  which  are
  1454.          applied in the order specified. If any of  the  individual  modifications  fails,
  1455.          then an AttributeError is generated and the entry left in the state it was  prior
  1456.          to the operation. That is, the  operation  is  atomic.  The  end  result  of  the
  1457.          sequence of modifications shall not violate the Directory schema. However, it  is
  1458.          possible, and sometimes necessary, for the individual  EntryModification  changes
  1459.          to appear to do so.  The following types of modification may occur:
  1460.                a)  addAttribute: This identifies a new attribute to be added to the entry, 
  1461.                   which is fully specified by the argument. Any attempt to add an already
  1462.                   existing attribute results in an AttributeError;
  1463.                b)  removeAttribute: The argument identifies (by its type) an attribute to
  1464.                   be removed from  the  entry.  Any  attempt  to  remove  a  non-existing
  1465.                   attribute results in an AttributeError;
  1466.                   Note - This operation is not allowed if the attribute type  is  present
  1467.                   in the RDN.
  1468.                c)  addValues: This identifies an attribute by the attribute type  in  the
  1469.                   argument, and specifies one or more attribute values to be added to the
  1470.                   attribute.  An attempt to add an already existing value results  in  an
  1471.                   error. An attempt to add a value to a non-existent type results  in  an
  1472.                   error;
  1473.                d)  removeValues: This identifies an attribute by the attribute type in the 
  1474.                   argument and specifies one or more attribute values to be removed  from
  1475.                   the attribute.  If the values are not present in  the  attribute,  this
  1476.                   results in an AttributeError. If an  attempt  is  made  to  modify  the
  1477.                   object class attribute, an update error is returned.
  1478.                    Note - This operation is now allowed if one of the values is present in
  1479.          the RDN.
  1480.                Values may be replaced by a combination of addValues and removeValues in  a
  1481.          single ModifyEntry operation.
  1482.          11.3.2.3  The CommonArguments (see  7.3) include a specification of  the  service
  1483.          controls applying to  the  request.  For  the  purposes  of  this  operation  the
  1484.          dontDereferenceAlias option and the sizeLimit component are not relevant and  are
  1485.          ignored if provided. Aliases are never dereferenced by this operation.
  1486.  
  1487.  
  1488.  
  1489.  
  1490.                                                       Fascicle VIII.8 - Rec. X.511   PAGE1
  1491.  
  1492.          11.3.3 Should the  request  succeed,  a  result  will  be  returned  although  no
  1493.          information will be conveyed with it.
  1494.          11.3.4 Should the request fail, one of the listed errors will  be  reported.  The
  1495.          circumstances under which the particular errors will be reported are  defined  in
  1496.           12.
  1497.          11.4   Modify RDN
  1498.          11.4.1 The ModifyRDN operation is used to change the Relative Distinguished  Name
  1499.          of a leaf entry (either an object entry or  an  alias  entry)  in  the  DIT.  The
  1500.          arguments of the operation may optionally be signed (see  7.10) by the requestor.
  1501.                ModifyRDN ::=           ABSTRACT-OPERATION
  1502.                   ARGUMENT       ModifyRDNArgument
  1503.                   RESULT   ModifyRDNResult
  1504.                   ERRORS {
  1505.                       NameError,
  1506.                       ServiceError, Referral, SecurityError,
  1507.                       UpdateError }
  1508.                ModifyRDNArgument   ::= OPTIONALLY-SIGNED SET {
  1509.                   object         [0]   DistinguishedName,
  1510.                   newRDN         [1]   RelativeDistinguishedName,
  1511.                   deleteOldRDN   [2]   BOOLEAN DEFAULT FALSE,
  1512.                   COMPONENTS OF CommonArguments }
  1513.                ModifyRDNResult   ::=   NULL
  1514.          11.4.2 The various parameters have  the  meanings  as  defined  in   11.4.2.1  to
  1515.          11.4.2.5.
  1516.          11.4.2.1  The object argument identifies the entry whose  Relative  Distinguished
  1517.          Name is to be modified. Aliases  in  the  name  will  not  be  dereferenced.  The
  1518.          immediate superior entry shall not have any Non-Specific  Subordinate  References
  1519.          (see Recommendation X.518).
  1520.          11.4.2.2  The newRDN argument specifies the new RDN of the entry.
  1521.          11.4.2.3  If an attribute value in the new RDN does  not  already  exist  in  the
  1522.          entry (either as part of the old RDN or  as  a  non-distinguished  value)  it  is
  1523.          added. If it cannot be added, an error is returned.
  1524.          11.4.2.4  If the deleteOldRDN flag is set, all attribute values in  the  old  RDN
  1525.          which are not in the new RDN are deleted. If this flag is not set, the old values
  1526.          should remain in the entry (not as a part of the RDN).  The  flag  shall  be  set
  1527.          where a single value  attribute  in  the  RDN  has  its  value   changed  by  the
  1528.          operation. If this operation removes the last attribute value  of  an  attribute,
  1529.          that attribute shall be deleted.
  1530.          11.4.2.5  The Common Arguments (see  7.3) include a specification of the  service
  1531.          controls applying to  the  request.  For  the  purposes  of  this  operation  the
  1532.          dontDereferenceAlias option and the sizeLimit component are not relevant and  are
  1533.          ignored if provided. Aliases are never dereferenced by this operation.
  1534.          11.4.3 Should the request  succeed,  a  result  will  be  returned,  although  no
  1535.          information will be conveyed with it.
  1536.          11.4.4 Should the request fail, one of the listed errors will  be  reported.  The
  1537.          circumstances under which the particular errors will be returned are  defined  in
  1538.           12.
  1539.          11.4.5 As defined in this Recommendation this operation may only  be  used  on  a
  1540.          leaf entry.
  1541.  
  1542.  
  1543.  
  1544.  
  1545.  
  1546.  
  1547.  
  1548.  
  1549.  
  1550.  
  1551.  
  1552.  
  1553.  
  1554.  
  1555.  
  1556.  
  1557.  
  1558.  
  1559.  
  1560.  
  1561.          PAGE26  Fascicle VIII.8 - Rec. X.511
  1562.  
  1563.                12     Errors
  1564.          12.1   Error Precedence
  1565.          12.1.1 The Directory does not continue to perform an operation beyond  the  point
  1566.          at which it determines that an error is to be reported.
  1567.                Note 1 - An implication of this rule is that the  first  error  encountered
  1568.          can differ for repeated instances of the same query, as there is not  a  specific
  1569.          logical order in which to process  a  given  query.  For  example,  DSAs  may  be
  1570.          searched in different orders.
  1571.                Note 2 - The rules of error precedence specified here  apply  only  to  the
  1572.          abstract service provided by the Directory as a  whole.   Different  rules  apply
  1573.          when the internal structure of the Directory is taken into account.
  1574.          12.1.2 Should the Directory  simultaneously  detect  more  than  one  error,  the
  1575.          following list determines which error is reported. An error higher  in  the  list
  1576.          has a higher logical precedence than one below it  and  is  the  error  which  is
  1577.          reported.
  1578.                a)  NameError
  1579.                b)  UpdateError
  1580.                c)  AttributeError
  1581.                d)  SecurityError
  1582.                e)  ServiceError.
  1583.          12.1.3 The following errors do not present any precedence conflicts:
  1584.                a)  AbandonFailed, because it is specific to one operation, Abandon, which
  1585.                   can encounter no other error;
  1586.                b)  Abandoned, which is not reported if an Abandon operation  is  received
  1587.                   simultaneously with  the  detection  of  an  error.  In  this  case  an
  1588.                   AbandonFailed error, reporting the problem tooLate  is  reported  along
  1589.                   with the report of the actual error encountered;
  1590.                c)  Referral, which is not a "real" error, only  an  indication  that  the
  1591.                   Directory has detected that the DUA must present its request to another
  1592.                   access point.
  1593.          12.2   Abandoned
  1594.          12.2.1 This outcome  may  be  reported  for  any  outstanding  directory  enquiry
  1595.          operation (i.e. Read, Search, Compare,  List)  if  the  DUA  invokes  an  Abandon
  1596.          operation with the appropriate InvokeID.
  1597.                Abandoned ::=     ABSTRACT-ERROR  -- not literally an "error"
  1598.          12.2.2 There are no parameters associated with this error.
  1599.          12.3   Abandon Failed
  1600.          12.3.1 The AbandonFailed error reports a problem encountered during an attempt to
  1601.          abandon an operation.
  1602.                AbandonFailed  ::=      ABSTRACT-ERROR
  1603.                   PARAMETER SET {
  1604.                       problem    [0] AbandonProblem,
  1605.                       operation  [1] InvokeID}
  1606.                AbandonProblem ::=      INTEGER
  1607.                                  noSuchOperation (1),
  1608.                                  tooLate (2),
  1609.                                  cannotAbandon (3) }
  1610.          12.3.2 The various parameters have the  meanings  as  defined  in   12.3.2.1  and
  1611.          12.3.2.2.
  1612.          12.3.2.1  The particular problem encountered is specified. Any of  the  following
  1613.          problems may be indicated:
  1614.                a)  noSuchOperation, when the Directory has no knowledge of the  operation
  1615.                   which is to be abandoned (this could be because  no  such  invoke  took
  1616.                   place or because the Directory has forgotten about it);
  1617.  
  1618.  
  1619.  
  1620.  
  1621.  
  1622.  
  1623.  
  1624.  
  1625.  
  1626.  
  1627.  
  1628.  
  1629.  
  1630.  
  1631.  
  1632.                                                       Fascicle VIII.8 - Rec. X.511   PAGE1
  1633.  
  1634.                b)  tooLate, when the Directory has already responded to the operation;
  1635.                c)  cannotAbandon, when an attempt has been made to abandon  an  operation
  1636.                   for which this is prohibited (e.g. modify), or the abandon could not be
  1637.                   performed.
  1638.          12.3.2.2  The identification of  the  particular  operation  (invocation)  to  be
  1639.          abandoned.
  1640.          12.4   Attribute Error
  1641.          12.4.1 An AttributeError reports an attribute-related problem.
  1642.                AttributeError ::= ABSTRACT-ERROR
  1643.                   PARAMETER SET {
  1644.                       object   [0]     Name,
  1645.                       problems [1]     SET OF SEQUENCE {
  1646.                          problem [0]  AttributeProblem,
  1647.                          type    [1]  AttributeType,
  1648.                          value   [2]  AttributeValue
  1649.                                        OPTIONAL }}
  1650.                AttributeProblem  ::=  INTEGER {
  1651.                   noSuchAttributeOrValue (1),
  1652.                   InvalidAttributeSyntax (2),
  1653.                   undefinedAttributeType (3),
  1654.                   InappropriateMatching (4),
  1655.                   constraintViolation (5)
  1656.                   attributeOrValueAlreadyExists (6) }
  1657.          12.4.2 The various parameters have the meanings as  described  in   12.4.2.1  and
  1658.          12.4.2.2.
  1659.          12.4.2.1  The object parameter identifies the entry to which  the  operation  was
  1660.          being applied when the error occurred.
  1661.          12.4.2.2  One or more problems may be specified. Each problem identified below is
  1662.          accompanied by an indication of the attribute type, and  if  necessary  to  avoid
  1663.          ambiguity, the value, which caused the problem:
  1664.                a)  noSuchAttributeOrValue: The named entry lacks one of the attributes or
  1665.                   attribute values specified as an argument of the operation;
  1666.                b)  invalidAttributeSyntax: A purported attribute value, specified  as  an
  1667.                   argument of the operation, does not conform to the attribute syntax  of
  1668.                   the attribute type;
  1669.                c)  undefinedAttributeType: An undefined attribute type was provided as an
  1670.                   argument to the operation. This error may occur  only  in  relation  to
  1671.                   Add, Remove, Modify or ModifyRDN operations;
  1672.                d)  inappropriateMatching: An attempt was made, e.g. in a filter, to use a
  1673.                   matching rule not defined for the attribute type concerned;
  1674.                e)  constraintViolation: An attribute or attribute value supplied  in  the
  1675.                   argument of abstract- operation does not  conform  to  the  constraints
  1676.                   imposed by Recommendation X.501 or by the  attribute  definition  (e.g.
  1677.                   the value exceeds the maximum size allowed);
  1678.                f)  attributeOrValueAlreadyExists: An attempt was made to add an attribute
  1679.                   which already existed in the entry, or a value which already existed in
  1680.                   the attribute.
  1681.          12.5   Name Error
  1682.          12.5.1 A NameError reports a problem related to the name provided as an  argument
  1683.          to an operation.
  1684.                NameError  ::= ABSTRACT-ERROR
  1685.                   PARAMETER SET {
  1686.                       problem [0]  NameProblem,
  1687.                       matched [1]  Name}
  1688.                NameProblem  ::=  INTEGER {
  1689.                   noSuchObject (1),
  1690.  
  1691.  
  1692.  
  1693.  
  1694.  
  1695.  
  1696.  
  1697.  
  1698.  
  1699.  
  1700.  
  1701.  
  1702.  
  1703.          PAGE26  Fascicle VIII.8 - Rec. X.511
  1704.  
  1705.                   aliasProblem (2),
  1706.                   invalidAttributeSyntax (3),
  1707.                   aliasDereferencingProblem (4) }
  1708.          12.5.2 The various parameters have the meanings as  described  in   12.5.2.1  and
  1709.          12.5.2.2.
  1710.          12.5.2.1  The particular problem encountered. Any of the following  problems  may
  1711.          be indicated:
  1712.                a)  noSuchObject: The name supplied does not match the name of any object;
  1713.                c)   invalidAttributeSyntax:  An  attribute  type  and  its   accompanying
  1714.                   attribute value in AVA in the name are incompatible;
  1715.                d)  aliasDereferencingProblem: An alias was  encountered  in  a  situation
  1716.                   where it was not allowed.
  1717.          12.5.2.2  The matched parameter contains the name of the lowest entry (object  or
  1718.          alias) in the DIT that was matched and is a truncated form of the  name  provided
  1719.          or, if an alias has been dereferenced, of the resulting name.
  1720.                Note - If there is a problem with the attribute types and/or values in  the
  1721.          name offered in a directory operation argument, this is reported via a  NameError
  1722.          (with problem invalidAttributeSyntax) rather than  as  an  AttributeError  or  an
  1723.          UpdateError.
  1724.          12.6   Referral
  1725.          12.6.1 A Referral redirects the service-user to one or more access points  better
  1726.          equipped to carry out the requested operation.
  1727.                Referral ::= ABSTRACT-ERROR  -- not literally an "error"
  1728.                   PARAMETER SET {
  1729.                   candidate      [0]  ContinuationReference }
  1730.          12.6.2 The error has a single parameter which  contains  a  ContinuationReference
  1731.          which can be used to progress the operation (see Recommendation X.518).
  1732.          12.7   Security Error
  1733.          12.7.1 A SecurityError reports  a  problem  in  carrying  out  an  operation  for
  1734.          security reasons.
  1735.                SecurityError ::= ABSTRACT-ERROR
  1736.                   PARAMETER SET {
  1737.                   problem  [0]   SecurityProblem }
  1738.                SecurityProblem   ::=  INTEGER {
  1739.                       InappropriateAuthentication (1),
  1740.                       InvalidCredentials (2),
  1741.                       InsufficientAccessRights (3),
  1742.                       InvalidSignature (4),
  1743.                       protectionRequired (5),
  1744.                       noInformation (6) }
  1745.          12.7.2 The error has a single parameter, which  reports  the  particular  problem
  1746.          encountered. The following problems may be indicated:
  1747.                a)  inappropriateAuthentication: The level of security associated with the
  1748.                   requestor's credentials is inconsistent with the  level  of  protection
  1749.                   requested,  e.g.  simple  credentials  were   supplied   while   strong
  1750.                   credentials were required;
  1751.                b)  invalidCredentials: The supplied credentials were invalid;
  1752.                c)  insufficientAccessRights: The requestor does not  have  the  right  to
  1753.                   carry out the requested operation;
  1754.                d)  invalidSignature: The signature of the request was found to be invalid;
  1755.                e)  protectionRequired: The Directory  was  unwilling  to  carry  out  the
  1756.                   requested operation because the argument was not signed;
  1757.                f)  noInformation: The requested operation produced a security  error  for
  1758.                   which no information is available.
  1759.  
  1760.  
  1761.  
  1762.  
  1763.  
  1764.  
  1765.  
  1766.  
  1767.  
  1768.  
  1769.  
  1770.  
  1771.  
  1772.  
  1773.  
  1774.                                                       Fascicle VIII.8 - Rec. X.511   PAGE1
  1775.  
  1776.                12.8   Service Error
  1777.          12.8.1 A ServiceError reports a problem related to the provision of the service.
  1778.                ServiceError  ::=   ABSTRACT-ERROR
  1779.                   PARAMETER SET {
  1780.                       problem  [0]  ServiceProblem },
  1781.                ServiceProblem  ::=  INTEGER {
  1782.                   busy (1),
  1783.                   unavailable (2),
  1784.                   unwillingToPerform (3),
  1785.                   chainingRequired (4),
  1786.                   unableToProceed (5),
  1787.                   invalidReference (6),
  1788.                   timeLimitExceeded (7),
  1789.                   administrativeLimitExceeded (8),
  1790.                   loopDetected (9),
  1791.                   unavailableCriticalExtension (10),
  1792.                   outOfScope (11),
  1793.                   ditError (12) }
  1794.          12.8.2 The error has a single parameter, which  reports  the  particular  problem
  1795.          encountered. The following problems may be indicated:
  1796.                a)  busy: The Directory, or some part of it,  is  presently  too  busy  to
  1797.                   perform the requested operation, but may be able to do so after a short
  1798.                   while;
  1799.                b)   navailable:  The  Directory,  or  some  part  of  it,  is   currently
  1800.                   unavailable;
  1801.                c)  unwillingToPerform: The Directory, or some part of it, is not prepared
  1802.                   to execute this request,  e.g.  because  it  would  lead  to  excessive
  1803.                   consumption of resources or violate the  policy  of  an  Administrative
  1804.                   Authority involved;
  1805.                d)  hainingRequired: The Directory is unable  to  accomplish  the  request
  1806.                   other than by chaining, however chaining was prohibited by means of the
  1807.                   chainingProhibited service control option;
  1808.                e)   unableToProceed:  The  DSA  returning  this  error   did   not   have
  1809.                   administrative authority for the appropriate naming context  and  as  a
  1810.                   consequence was not able to participate in name resolution;
  1811.                f)  unvalidReference: The DSA was unable to perform the request as directed 
  1812.                   by the DUA (in  
  1813.                g)  timeLimitExceeded: The Directory has reached the limit of time set  by
  1814.                   the user in a service control. No  partial  results  are  available  to
  1815.                   return to the user;
  1816.                h)  administrativeLimitExceeded: The Directory has reached some limit  set
  1817.                   by an administrative authority, and no partial results are available to
  1818.                   return to the user;
  1819.                i)  loopDetected: The Directory is unable to accomplish the request due to
  1820.                   an internal loop;
  1821.                j)  unavailableCriticalExtension: The Directory was unable to execute  the
  1822.                   request because one or more critical extensions were not available; 
  1823.                k)  outOfScope: No referrals were available within the requested scope;
  1824.                l)  ditError: The Directory is unable to accomplish the request due  to  a
  1825.                   DIT consistency problem.
  1826.          12.9   Update Error
  1827.          12.9.1 An UpdateError reports problems related to attempts  to  add,  delete,  or
  1828.          modify information in the DIB.
  1829.                UpdateError  ::=  ABSTRACT-ERROR
  1830.  
  1831.  
  1832.  
  1833.  
  1834.  
  1835.  
  1836.  
  1837.  
  1838.  
  1839.  
  1840.  
  1841.  
  1842.  
  1843.  
  1844.  
  1845.          PAGE26  Fascicle VIII.8 - Rec. X.511
  1846.  
  1847.                       PARAMETER SET {
  1848.                          problem   [0]   UpdateProblem }
  1849.  
  1850.  
  1851.  
  1852.  
  1853.  
  1854.  
  1855.  
  1856.  
  1857.  
  1858.  
  1859.  
  1860.  
  1861.  
  1862.  
  1863.  
  1864.  
  1865.  
  1866.  
  1867.  
  1868.  
  1869.  
  1870.  
  1871.  
  1872.  
  1873.  
  1874.  
  1875.  
  1876.  
  1877.  
  1878.  
  1879.  
  1880.  
  1881.  
  1882.  
  1883.  
  1884.  
  1885.  
  1886.  
  1887.  
  1888.  
  1889.  
  1890.  
  1891.  
  1892.  
  1893.  
  1894.  
  1895.  
  1896.  
  1897.  
  1898.  
  1899.  
  1900.  
  1901.  
  1902.  
  1903.  
  1904.  
  1905.  
  1906.  
  1907.  
  1908.  
  1909.  
  1910.  
  1911.  
  1912.  
  1913.  
  1914.  
  1915.  
  1916.                                                       Fascicle VIII.8 - Rec. X.511   PAGE1
  1917.  
  1918.                   UpdateProblem      ::=   INTEGER {
  1919.                       namingViolation (1),
  1920.                       objectClassViolation (2),
  1921.                       notAllowedOnNonLeaf (3),
  1922.                       notAllowedOnRDN (4),
  1923.                       entryAlreadyExists (5),
  1924.                       affectsMultipleDSAs (6),
  1925.                       objectClassModificationProhibited (7) }
  1926.          12.9.2 The error has a single problem parameter,  which  reports  the  particular
  1927.          problem encountered.  The following problems may be indicated:
  1928.                a)  namingViolation: The attempted addition or modification would  violate
  1929.                   the structure rules of the DIT as defined in the Directory  schema  and
  1930.                   Recommendation  X.501.  That  is,  it  would  place  an  entry  as  the
  1931.                   subordinate of an alias entry, or in a region of the DIT not  permitted
  1932.                   to a member of its object class or would define an RDN for an entry  to
  1933.                   include a forbidden attribute type; 
  1934.                b)  objectClassViolation: The attempted  update  would  produce  an  entry
  1935.                   inconsistent with the definition provided by its object class  or  with
  1936.                   the definitions of Recommendation  X.501  as  they  pertain  to  object
  1937.                   classes;
  1938.                c)  notAllowedOnNonLeaf: The attempted operation is only allowed  on  leaf
  1939.                   entries of the DIT; 
  1940.                d)  notAllowedOnRDN: The attempted operation would affect  the  RDN  (e.g.
  1941.                   removal of an attribute which is a part of the RDN);
  1942.                e)  entryAlreadyExists: An attempted AddEntry  operation  names  an  entry
  1943.                   which already exists; 
  1944.                f)  affectsMultipleDSAs: An attempted update  would  need  to  operate  on
  1945.                   multiple DSAs, which is not permitted;
  1946.                g)  objectClassModificationProhibited: An operation attempted to modify the 
  1947.                   object class attribute.
  1948.                Note - The UpdateError is  not  used  to  report  problems  with  attribute
  1949.          types, values or constraint violations encountered in an  AddEntry,  RemoveEntry,
  1950.          ModifyEntry  or  ModifyRDN  operation.  Such  problems  are   reported   via   an
  1951.          AttributeError.
  1952.  
  1953.  
  1954.  
  1955.  
  1956.  
  1957.  
  1958.  
  1959.  
  1960.  
  1961.  
  1962.  
  1963.  
  1964.  
  1965.  
  1966.  
  1967.  
  1968.  
  1969.  
  1970.  
  1971.  
  1972.  
  1973.  
  1974.  
  1975.  
  1976.  
  1977.  
  1978.  
  1979.  
  1980.  
  1981.  
  1982.  
  1983.  
  1984.  
  1985.  
  1986.  
  1987.          PAGE26  Fascicle VIII.8 - Rec. X.511
  1988.  
  1989.